using UnityEngine;
using Voodoo.Sauce.Internal.Ads;
using Voodoo.Sauce.Internal.Analytics;
using Voodoo.Sauce.Internal.CrossPromo;
using Voodoo.Sauce.Internal.IAP;

namespace Voodoo.Sauce.Internal
{
	[CreateAssetMenu(fileName = "Assets/Resources/VoodooSettings", menuName = "VoodooSauce/Settings file", order = 1000)]
	public class VoodooSettings : ScriptableObject
	{
		[Header("Voodoo Sauce version 3.4.0b4")]
		[Header("Mixpanel")]
		[Tooltip("The token of the Mixpanel project. Leaving it empty will disable Mixpanel.")]
		public string MixpanelProdToken;

		[Range(0.001f, 0.25f)]
		public float MixpanelUsersPercentPerCohort = 0.05f;

		[Header("GameAnalytics")]
		[Tooltip("Your GameAnalytics Ios Game Key - copy/paste from the GA website")]
		public string GameAnalyticsIosGameKey;

		[Tooltip("Your GameAnalytics Ios Secret Key - copy/paste from the GA website")]
		public string GameAnalyticsIosSecretKey;

		[Tooltip("Your GameAnalytics Android Game Key - copy/paste from the GA website")]
		public string GameAnalyticsAndroidGameKey;

		[Tooltip("Your GameAnalytics Android Secret Key - copy/paste from the GA website")]
		public string GameAnalyticsAndroidSecretKey;

		[Header("Facebook")]
		[Tooltip("The Facebook App Id of your game - copy/paste from Facebook website")]
		public string FacebookAppId;

		[Header("Fabric")]
		[Tooltip("Fabric organization name")]
		public string FabricOrganizationName;

		[Tooltip("Fabric organization id")]
		public string FabricOrganizationId;

		[Tooltip("Fabric organization api key")]
		public string FabricOrganizationApiKey;

		[Tooltip("Fabric organization build secret")]
		public string FabricOrganizationBuildSecret;

		[Header("SafeDK (Optional)")]
		[Tooltip("SafeDK iOS App Id")]
		public string SafeDkIosAppId;

		[Tooltip("SafeDK iOS API Key")]
		public string SafeDkIosApiKey;

		[Tooltip("SafeDK Android App Id")]
		public string SafeDkAndroidAppId;

		[Tooltip("SafeDK Android API Key")]
		public string SafeDkAndroidApiKey;

		[Header("Ad Units")]
		[Tooltip("Leave the field blank if you don't want a certain kind of ads in your game")]
		public AdUnits IosAdUnits;

		[Tooltip("Leave the field blank if you don't want a certain kind of ads in your game")]
		public AdUnits AndroidAdUnits;

		[Header("Tapjoy")]
		[Tooltip("Leave blank if you did not receive any Tapjoy key")]
		public string TapjoyIosSdkKey;

		[Tooltip("Leave blank if you did not receive any Tapjoy key")]
		public string TapjoyAndroidSdkKey;

		[Header("Ogury")]
		[Tooltip("Leave blank if you did not receive any Ogury App key")]
		public string OguryAndroidAppKey;

		[Header("AdMob")]
		[Tooltip("Ask your Voodoo agents for AdMob Android App Id")]
		public string AdMobAndroidAppId;

		[Header("A/B Tests")]
		[Tooltip("The list of currently active A/B tests. Each entry represents a cohort")]
		public string[] RunningABTests;

		[Tooltip("This value will be used as a cohort in debug / editor mode.")]
		public DebugForcedCohort DebugForcedCohort;

		[Header("In-app Purchases")]
		[Tooltip("Your No-Ads in-app purchase bundle id. You need to use the NoAdsButton component if you fill that field.")]
		public string NoAdsBundleId;

		[Tooltip("The list of all products available for sale in the app")]
		public ProductDescriptor[] Products;

		[Header("Cross Promotion")]
		public CrossPromoSettings CrossPromo;

		public bool EnableCrossPromo;

		[Header("App Rater")]
		[Tooltip("Apple Store Id of the game")]
		public string AppleStoreId;

		[Tooltip("Minimum delay when the App Rater can be displayed after the launch of the game (in seconds)")]
		public int AppRaterDelayAfterLaunchInSeconds = 60;

		[Tooltip("Minimum delay between two App Rater displays (in seconds)")]
		public int AppRaterPostponeCooldownInSeconds = 86400;

		[Tooltip("Minimum number of games at which the App Rater will starts to be shown.If 0, the App Rater will never be shown after a game played")]
		public int AppRaterMinimumNumberOfGamesPlayed = 5;

		[Header("Misc")]
		[Tooltip("The primary color that will show on the GDPR popup")]
		public Color GdprPrimaryColor = new Color(0.254f, 0.509f, 0.894f);

		[Tooltip("Type of VoodooSauce logs that will be displayed (only changes in editor. On devices the logs will always be displayed")]
		public VoodooLogLevel VoodooLogLevelInEditor = VoodooLogLevel.DEBUG;

		[Tooltip("If checked, the Android build won't be stopped because the Google Public Key is missing.")]
		public bool IgnoreTheGoogleKeyError;
	}
}
